home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume11 / map / part01
Encoding:
Text File  |  1990-08-20  |  13.8 KB  |  633 lines

  1. Path: uunet!ogicse!zephyr.ens.tek.com!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v11i025:  map - the old GIGI map game ("Col"), Part01/01
  5. Message-ID: <6149@tekred.CNA.TEK.COM>
  6. Date: 16 Aug 90 00:04:11 GMT
  7. Sender: news@tekred.CNA.TEK.COM
  8. Lines: 621
  9. Approved: billr@saab.CNA.TEK.COM
  10. Posted: Wed Aug 15 17:04:11 1990
  11.  
  12. Submitted-by: George L Sicherman <gls@odyssey.att.COM>
  13. Posting-number: Volume 11, Issue 25
  14. Archive-name: map/Part01
  15.  
  16. [[Here's the source to my old "map" game ("Col" in W.W.I).  It also
  17. runs on non-GIGIs, but is not very interesting that way.]]
  18.  
  19. #! /bin/sh
  20. # This is a shell archive.  Remove anything before this line, then unpack
  21. # it by saving it into a file and typing "sh file".  To overwrite existing
  22. # files, type "sh file -c".  You can also feed this as standard input via
  23. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  24. # will see the following message at the end:
  25. #        "End of archive 1 (of 1)."
  26. # Contents:  README Makefile map.c map.data map.h
  27. # Wrapped by billr@saab on Wed Aug 15 17:04:57 1990
  28. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  29. if test -f 'README' -a "${1}" != "-c" ; then 
  30.   echo shar: Will not clobber existing file \"'README'\"
  31. else
  32. echo shar: Extracting \"'README'\" \(369 characters\)
  33. sed "s/^X//" >'README' <<'END_OF_FILE'
  34. XThe object of this game is to claim as many states as possible
  35. Xplaying against the computer.  Each player alternates in picking a
  36. Xstate. The state chosen can not border a state that player has
  37. Xpreviously picked. The game ends when neither player can make
  38. Xany more moves. It is best played on a (color) GIGI terminal,
  39. Xbut can still be played on a non-graphics terminal.
  40. END_OF_FILE
  41. if test 369 -ne `wc -c <'README'`; then
  42.     echo shar: \"'README'\" unpacked with wrong size!
  43. fi
  44. # end of 'README'
  45. fi
  46. if test -f 'Makefile' -a "${1}" != "-c" ; then 
  47.   echo shar: Will not clobber existing file \"'Makefile'\"
  48. else
  49. echo shar: Extracting \"'Makefile'\" \(161 characters\)
  50. sed "s/^X//" >'Makefile' <<'END_OF_FILE'
  51. Xmap: map.o
  52. X    cc -o map map.o
  53. Xshar: map.shar
  54. Xmap.shar: Makefile map.h map.c map.data
  55. X    shar Makefile map.h map.c map.data > map.shar
  56. Xclean:
  57. X    rm -f map map.shar *.o
  58. END_OF_FILE
  59. if test 161 -ne `wc -c <'Makefile'`; then
  60.     echo shar: \"'Makefile'\" unpacked with wrong size!
  61. fi
  62. # end of 'Makefile'
  63. fi
  64. if test -f 'map.c' -a "${1}" != "-c" ; then 
  65.   echo shar: Will not clobber existing file \"'map.c'\"
  66. else
  67. echo shar: Extracting \"'map.c'\" \(7432 characters\)
  68. sed "s/^X//" >'map.c' <<'END_OF_FILE'
  69. X/*
  70. X *    map
  71. X */
  72. X
  73. X#define RED 1
  74. X#define BLUE (-1)
  75. X
  76. X#include <ctype.h>
  77. X#include <stdio.h>
  78. X#include "map.h"
  79. X
  80. Xchar redscreen = 'R', bluescreen = 'B';
  81. Xshort int adjm[] = {
  82. X    /* AL */ FL, GA, MS, TN, -1,
  83. X    /* AZ */ CA, NM, NV, UT, -1,
  84. X    /* AR */ LA, MO, MS, OK, TN, TX, -1,
  85. X    /* CA */ AZ, NV, OR, -1,
  86. X    /* CO */ KS, NE, NM, OK, UT, WY, -1,
  87. X    /* CT */ MA, NY, RI, -1,
  88. X    /* DE */ MD, NJ, PA, -1,
  89. X    /* FL */ AL, GA, -1,
  90. X    /* GA */ AL, FL, NC, SC, TN, -1,
  91. X    /* ID */ MT, NV, OR, UT, WA, WY, -1,
  92. X    /* IL */ IA, IN, KY, MO, WI, -1,
  93. X    /* IN */ IL, KY, MI, OH, -1,
  94. X    /* IA */ IL, MN, MO, NE, SD, WI, -1,
  95. X    /* KS */ CO, MO, NE, OK, -1,
  96. X    /* KY */ IL, IN, MO, OH, TN, VA, WV, -1,
  97. X    /* LA */ AR, MS, TX, -1,
  98. X    /* ME */ NH, -1,
  99. X    /* MD */ DE, PA, VA, WV, -1,
  100. X    /* MA */ CT, NH, NY, RI, VT, -1,
  101. X    /* MI */ IN, OH, WI, -1,
  102. X    /* MN */ IA, ND, SD, WI, -1,
  103. X    /* MS */ AL, AR, LA, TN, -1,
  104. X    /* MO */ AR, IA, IL, KS, KY, NE, OK, TN, -1,
  105. X    /* MT */ ID, ND, SD, WY, -1,
  106. X    /* NE */ CO, IA, KS, MO, SD, WY, -1,
  107. X    /* NV */ AZ, CA, ID, OR, UT, -1,
  108. X    /* NH */ MA, ME, VT, -1,
  109. X    /* NJ */ DE, PA, NY, -1,
  110. X    /* NM */ AZ, CO, OK, TX, -1,
  111. X    /* NY */ CT, MA, NJ, PA, VT, -1,
  112. X    /* NC */ GA, SC, TN, VA, -1,
  113. X    /* ND */ MN, MT, SD, -1,
  114. X    /* OH */ IN, KY, MI, PA, WV, -1,
  115. X    /* OK */ AR, CO, KS, MO, NM, TX, -1,
  116. X    /* OR */ CA, ID, NV, WA, -1,
  117. X    /* PA */ DE, MD, NJ, NY, OH, WV, -1,
  118. X    /* RI */ CT, MA, -1,
  119. X    /* SC */ GA, NC, -1,
  120. X    /* SD */ IA, MN, MT, ND, NE, WY, -1,
  121. X    /* TN */ AL, AR, GA, KY, MO, MS, NC, VA, -1,
  122. X    /* TX */ AR, LA, OK, NM, -1,
  123. X    /* UT */ AZ, CO, ID, NV, WY, -1,
  124. X    /* VT */ MA, NH, NY, -1,
  125. X    /* VA */ KY, MD, NC, TN, WV, -1,
  126. X    /* WA */ ID, OR, -1,
  127. X    /* WV */ KY, MD, OH, PA, VA, -1,
  128. X    /* WI */ IA, IL, MI, MN, -1,
  129. X    /* WY */ CO, ID, MT, NE, SD, UT, -1};
  130. X
  131. Xshort int *adj[48];
  132. X
  133. Xchar *name[48] = {
  134. X    "AL","AZ","AR","CA","CO","CT","DE","FL","GA","ID","IL",
  135. X    "IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS",
  136. X    "MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR",
  137. X    "PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"};
  138. X
  139. Xshort int own[48];
  140. Xshort int out[2][48];
  141. Xint igofirst, gameover;
  142. XFILE *Data;
  143. Xchar dataname[] = "/cs/staff/colonel/games/map/map.data";
  144. Xint dflag;    /* DEBUG */
  145. Xint gigi;
  146. Xlong time();
  147. Xchar *getenv();
  148. X
  149. Xmain(argc,argv)
  150. Xint argc;
  151. Xchar **argv;
  152. X{
  153. X    int j;
  154. X    short int *p;
  155. X    char *g;
  156. X    printf("MAP\n");
  157. X    do_args(argc,argv);
  158. X    g=getenv("TERM");
  159. X    if (!(strcmp(g,"vk100") && strcmp(g,"dk"))) gigi++;
  160. X    if (gigi) {
  161. X        if (NULL==(Data=fopen(dataname,"r"))) {
  162. X            fprintf(stderr,"map: no data file\n");
  163. X            gigi=0;
  164. X        }
  165. X        else printf("\033PpW(I(W))S(I(D))S(E)\n");
  166. X        if (g=getenv("MAPCOLOR")) switch(*g) {
  167. X        case 'R': case 'r': break;
  168. X        case 'G': case 'g':
  169. X            redscreen='G';
  170. X            bluescreen='R';
  171. X            break;
  172. X        case 'M': case 'm':
  173. X        case 'P': case 'p':
  174. X            redscreen='M';
  175. X            bluescreen=getpid()&1?'G':'B';
  176. X            break;
  177. X        case 'B': case 'b':
  178. X            redscreen='B';
  179. X            bluescreen='R';
  180. X            break;
  181. X        case 'C': case 'c':
  182. X            redscreen='C';
  183. X            bluescreen='R';
  184. X            break;
  185. X        }
  186. X    }
  187. X    srand((int)time(0));
  188. X    adj[0]=adjm;
  189. X    p=adjm;
  190. X    for (j=1; j<48; j++) {
  191. X        while (*p++ >= 0);
  192. X        adj[j]=p;
  193. X    }
  194. X    do {
  195. X        initgame();
  196. X        playgame();
  197. X    } 
  198. X    while (playagain());
  199. X    quit(0);
  200. X}
  201. X
  202. Xdo_args(argc,argv)
  203. Xint argc;
  204. Xchar **argv;
  205. X{
  206. X    while (--argc) {
  207. X        if ('-'!=**++argv) bomb();
  208. X        switch (*++*argv) {
  209. X        case 'd':
  210. X            dflag++;
  211. X            break;
  212. X        case 'g':
  213. X            gigi++;
  214. X            break;
  215. X        default:
  216. X            bomb();
  217. X        }
  218. X    }
  219. X}
  220. X
  221. Xbomb()
  222. X{
  223. X    fprintf(stderr,"usage: map [-d]\n");
  224. X    exit(1);
  225. X}
  226. X
  227. Xplayagain()
  228. X{
  229. X    char c;
  230. X    int d;
  231. X    if (gigi) printf("\033[2K");
  232. X    printf("Do you want to play again? ");
  233. X    fflush(stdout);
  234. X    for (;;) {
  235. X        c=getchar();
  236. X        if (c==EOF) return 0;
  237. X        if (!isspace(c)) break;
  238. X    }
  239. X    d=(c=='y'||c=='Y');
  240. X    while (c!=EOF && c!='\n') c=getchar();
  241. X    return d;
  242. X}
  243. X
  244. Xinitgame()
  245. X{
  246. X    int j;
  247. X    for (j=0; j<48; j++) own[j]=0;
  248. X    for (j=0; j<48; j++) out[0][j]=out[1][j]=0;
  249. X    if (gigi) {
  250. X        printf("\033PpS(E)\n");
  251. X        for (j=0; j<48; j++) drawstate(j,0);
  252. X    }
  253. X}
  254. X
  255. Xplaygame()
  256. X{
  257. X    int n;
  258. X    gameover=0;
  259. X    if (igofirst=!igofirst) imove(arb());
  260. X    for (;;) {
  261. X        if (0<=canmove(RED)) youmove();
  262. X        else {
  263. X            iwin();
  264. X            break;
  265. X        }
  266. X        if (dflag && !gigi) printf("Value: %d\n",value());
  267. X        n=nmoves(RED);
  268. X        if (0<=canmove(BLUE)) imove(bestmove(BLUE,n>30?0:n>10?1:2));
  269. X        else {
  270. X            youwin();
  271. X            break;
  272. X        }
  273. X        if (dflag && !gigi) printf("Value: %d\n",value());
  274. X    }
  275. X}
  276. X
  277. Xint
  278. Xbestmove(w,lev)
  279. Xint w, lev;
  280. X{
  281. X    int bestval, best, j, v, b;
  282. X    bestval = -1000;
  283. X    for (j=0; j<48; j++) if (islegal(j,w)) {
  284. X        try(j,w);
  285. X        if (0==lev) v=value()*(-w);
  286. X        else if (0>canmove(-w)) v=1000;
  287. X        else {
  288. X            try(b=bestmove(-w,lev-1),-w);
  289. X            v=value();
  290. X            untry(b);
  291. X            if (dflag && !gigi) printf("%s: %s %d\n",
  292. X            name[j],name[b],v);
  293. X        }
  294. X        if (out[w<0][j]) v-=5;
  295. X        if (v>bestval) {
  296. X            bestval=v;
  297. X            best=j;
  298. X        }
  299. X        untry(j);
  300. X    }
  301. X    return best;
  302. X}
  303. X
  304. Xint
  305. Xislegal(n,w)
  306. Xint n, w;
  307. X{
  308. X    short int *d;
  309. X    if (own[n]) return 0;
  310. X    if (out[w==RED][n]) return 0;
  311. X    for (d=adj[n]; *d>=0; d++) if (own[*d]==w) return 0;
  312. X    return 1;
  313. X}
  314. X
  315. Xarb()
  316. X{
  317. X    return rand()%48;
  318. X}
  319. X
  320. Xiwin()
  321. X{
  322. X    if (gigi) printf("\033\\\033[H\033[2K");
  323. X    printf("You lose!\n");
  324. X}
  325. X
  326. Xyouwin()
  327. X{
  328. X    if (gigi) printf("\033\\\033[H\033[2K");
  329. X    printf("You win.\n");
  330. X}
  331. X
  332. Xcanmove(who)
  333. X{
  334. X    int j;
  335. X    for (j=0; j<48; j++) if (islegal(j,who)) return j;
  336. X    return -1;
  337. X}
  338. X
  339. Xvalue()
  340. X{
  341. X    return nmoves(BLUE) - nmoves(RED);
  342. X}
  343. X
  344. Xnmoves(who)
  345. X{
  346. X    int j, n;
  347. X    n=0;
  348. X    for (j=0; j<48; j++) if (islegal(j,who)) n++;
  349. X    return n;
  350. X}
  351. X
  352. Ximove(m)
  353. Xint m;
  354. X{
  355. X    if (!gigi) printf("I take %s\n",name[m]);
  356. X    mark(m,BLUE);
  357. X}
  358. X
  359. Xint
  360. Xyoumove()
  361. X{
  362. X    int j, u;
  363. X    short int *d;
  364. X    char hold[80];
  365. X    if (gigi) printf("\033\\");
  366. X    for (;;) {
  367. X        if (gigi) printf("\033[H\033[2K");
  368. X        printf("What do you take? ");
  369. X        fflush(stdout);
  370. X        u=scanf(" %s",hold);
  371. X        if (u<1) continue;
  372. X        for (j=0; j<48; j++) if (!diff(name[j],hold)) {
  373. X            if (own[j]) {
  374. X                if (gigi) printf("\033[2K");
  375. X                printf("%s already taken\n",name[j]);
  376. X                goto again;
  377. X            }
  378. X            for (d=adj[j]; *d>=0; d++) if (RED==own[*d]) {
  379. X                if (gigi) printf("\033[2K");
  380. X                printf("%s borders %s\n",name[j],name[*d]);
  381. X                goto again;
  382. X            }
  383. X            if (gigi) printf("\033Pp\n");
  384. X            mark(j,RED);
  385. X            return;
  386. X        }
  387. X        if (nmoves(RED)>15) printf("Unknown state: %s\n",hold);
  388. X        else {
  389. X            if (gigi) printf("\033[2K");
  390. X            printf("States remaining:");
  391. X            for (j=0; j<48; j++) if (islegal(j,RED))
  392. X                printf(" %s",name[j]);
  393. X            printf("\n");
  394. X        }
  395. Xagain:        
  396. X        ;
  397. X    }
  398. X}
  399. X
  400. Xint
  401. Xdiff(s0,s1)
  402. Xchar *s0, *s1;
  403. X{
  404. X    while (*s0) if ((~040&(*s1++))!=(~040&(*s0++))) return 1;
  405. X    return *s1;
  406. X}
  407. X
  408. Xmark(s,w)
  409. Xint s, w;
  410. X{
  411. X    short int *d;
  412. X    own[s]=w;
  413. X    for (d=adj[s]; *d>=0; d++) out[w>0][*d]++;
  414. X    if (gigi) drawstate(s,w);
  415. X}
  416. X
  417. Xtry(s,w)
  418. Xint s, w;
  419. X{
  420. X    own[s]=w;
  421. X}
  422. X
  423. Xuntry(s)
  424. Xint s;
  425. X{
  426. X    own[s]=0;
  427. X}
  428. X
  429. Xdrawstate(n,color)
  430. Xint n, color;
  431. X{
  432. X    char st[3];
  433. X    int u, x, y, r, c, newc;
  434. X    char t;
  435. X    rewind(Data);
  436. X    for (;;) {
  437. X        u=fscanf(Data,"%s",st);
  438. X        if (u!=1) {
  439. X            if (dflag) return;
  440. X            printf("map: data error %s\n",name[n]);
  441. X            quit(1);
  442. X        }
  443. X        if (!diff(st,name[n])) break;
  444. X        while ('\n'!=getc(Data));
  445. X    }
  446. X    fscanf(Data,"%d %d",&x,&y);
  447. X    printf("P[%d,%d]\n",x*12,y*8);
  448. X    switch (color) {
  449. X    case RED:
  450. X        printf("W(I(%c))W(S1)\n",redscreen);
  451. X        break;
  452. X    case BLUE:
  453. X        printf("W(I(%c))W(S1)\n",bluescreen);
  454. X        break;
  455. X    case 0:
  456. X        printf("W(I(Y))\n");
  457. X    }
  458. X    c=2;
  459. X    for (;;) {
  460. X        fscanf(Data,"%d%c",&r,&t);
  461. X        if (t=='e') break;
  462. X        switch (c) {
  463. X        case 0:
  464. X            y-=r;
  465. X            break;
  466. X        case 1:
  467. X            x+=r;
  468. X            break;
  469. X        case 2:
  470. X            y+=r;
  471. X            break;
  472. X        case 3:
  473. X            x-=r;
  474. X        }
  475. X        if (t=='s') {
  476. X            if (color) printf("W(S0)W(S1)");
  477. X            continue;
  478. X        }
  479. X        newc = (c+(t=='l'? 3: 1))%4;
  480. X        printf("V[%d,%d]\n",x*12-(c==1||newc==3),y*8-(c==2||newc==0));
  481. X        c = newc;
  482. X    }
  483. X    printf("W(S0)W(I(W))\n");
  484. X}
  485. X
  486. Xquit(m)
  487. Xint m;
  488. X{
  489. X    if (gigi) printf("\033\\\n");
  490. X    exit(m);
  491. X}
  492. END_OF_FILE
  493. if test 7432 -ne `wc -c <'map.c'`; then
  494.     echo shar: \"'map.c'\" unpacked with wrong size!
  495. fi
  496. # end of 'map.c'
  497. fi
  498. if test -f 'map.data' -a "${1}" != "-c" ; then 
  499.   echo shar: Will not clobber existing file \"'map.data'\"
  500. else
  501. echo shar: Extracting \"'map.data'\" \(1770 characters\)
  502. sed "s/^X//" >'map.data' <<'END_OF_FILE'
  503. XAL 37 45    8l2l2r3l6l1r5l4l5l0e
  504. XAR 30 36    8l1r1l2l5r1l2r1l2l1r1l4l1l0e
  505. XAZ 10 40    8l6l14l5l6r1l0e
  506. XCA 00 22     14l1r2l1r2l1r2l1r2l1r0s2l1r2l4l6l1r2l1r2l1r2l1r2l1r0s12l5l0e
  507. XCO 16 24    10l7l10l7l0e
  508. XDE 54 25    3l1l3l1l0e
  509. XFL 39 51    2l8r1l1r1l1r1l1r4l2l1r1l5l1r1l1r2l12l0e
  510. XGA 42 45    6l8l4l1r2l1r1l1r1l1r1l1r1l1r1l1r1l2l6l1r0e
  511. XIA 27 18    3l1r4l1r1l3l2r1l2l0s0r3l1r1l5l0e
  512. XID 06 05    13l1r0s4l6l5l3r1l1r1l1r10l2l0e
  513. XIL 32 25    3l1r2l1r2l1r1l1l2r1l11l2r1l2l5r1l1l0e
  514. XIN 37 19    11l2l1r1l11l2l1r1l0e
  515. XKS 23 27    7l7l7l7l0e
  516. XKY 35 33    2l7l1r1l1r0s1l3l1r2l2r1l1l2r1l1r2l1r1l2r1l0e
  517. XLA 31 45    9l0s4l3l2r6l2l0e
  518. XMD 47 25    3l1l1r3r1l1r1l1r1l0s2l2l1r3l0s7l0e
  519. XMI 38 11    7l6l8l0s5r1r3l2l2r1l5l1l2r2l2r1r1l0e
  520. XMN 27 05    13l3l0s0r2l2l1r3l1r4r0s1l2r0s1l1r2l1l7l0e
  521. XMO 30 27    8l4r1l1l4l1r2l1r2l1r2l3l1l1r0e
  522. XMS 33 40    11l2r2l2l13l4l0e
  523. XMT 08 05    10l1r1l1r1l3l2r7l10l12l0e
  524. XNC 45 35    1r0s1l1r0s1l1r0s1l1l1r1l2l1r2l1r3r1l1r1l1l1r1l2r1l2l9l0e
  525. XND 20 05    7l7l7l7l0e
  526. XNE 20 20    4l3r3l3l0s0r3l2l1r4l2r1l0s6l0e
  527. XNJ 55 19    7l2l7l1r1l1l1l0e
  528. XNM 16 34    14l1l1r4l13l5l0e
  529. XNV 05 22    12l1r2l1r2l1r2l1r2l1l2r1l18l6l0e
  530. XNY 46 15    1l1r2l9r1l1l12l3l1r1l1r1l3r3l1r1l1r1l1r1l1l0e
  531. XOH 40 18    9l1r1l2l3r1l2r1l5l5l0e
  532. XOK 21 34    1l3r4l6l5l9l0e
  533. XOR 00 20    2l7l4l1r5l1l1r3r1l2l7l0e
  534. XPA 45 18    7l10l7l8r2l1l1r1l1l0e
  535. XSC 44 40    1l1r1l1r1l1r1l1r1l2l2r1l2r1l1l1r1l1r1l3l1r2l1r1l0e
  536. XSD 20 12    8l6r1l1l9l7l0e
  537. XTN 35 35    3r1l2l7l1r1l1r1l1r1l1r1l1l10l0e
  538. XTX 17 47    2l2r2l2r1l2r1l1r1l2r1l1r1l1r1l1l3r2l10l1r5l6r4l3l12r4l0e
  539. XUT 11 24    10l5l10l3r2l2l2l0e
  540. XVA 42 34    1l12l5l1r1l1r1l1r1l3l2r1l1r2l1r1l2r1l1r1l0e
  541. XWA 00 08    5l2r1l3l1r1l8l4l3r2l0e
  542. XWI 30 09    4l1r3l1r3l3l3r1l4r1l5l2r1l3l1r1l2r1l0e
  543. XWV 43 28    2l1r1l1l1r2l1r1l1l1r3l2r2l1l2r1l3l0e
  544. XWY 13 15    9l7l9l7l0e
  545. XCT 57 16    3l1l3l1l0e
  546. XRI 58 16    3l1lel1l0e
  547. XMA 57 14    2l2r3l1l5l3l0e
  548. XVT 57 07    7l1l2r1l3l2l0e
  549. XNH 58 11    3l2l7l1l4r1l0e
  550. XME 60 05    8l1l1r1l1r1l1r1l7l2l2r1l0e
  551. END_OF_FILE
  552. if test 1770 -ne `wc -c <'map.data'`; then
  553.     echo shar: \"'map.data'\" unpacked with wrong size!
  554. fi
  555. # end of 'map.data'
  556. fi
  557. if test -f 'map.h' -a "${1}" != "-c" ; then 
  558.   echo shar: Will not clobber existing file \"'map.h'\"
  559. else
  560. echo shar: Extracting \"'map.h'\" \(662 characters\)
  561. sed "s/^X//" >'map.h' <<'END_OF_FILE'
  562. X#define AL 0
  563. X#define AZ 1
  564. X#define AR 2
  565. X#define CA 3
  566. X#define CO 4
  567. X#define CT 5
  568. X#define DE 6
  569. X#define FL 7
  570. X#define GA 8
  571. X#define ID 9
  572. X#define IL 10
  573. X#define IN 11
  574. X#define IA 12
  575. X#define KS 13
  576. X#define KY 14
  577. X#define LA 15
  578. X#define ME 16
  579. X#define MD 17
  580. X#define MA 18
  581. X#define MI 19
  582. X#define MN 20
  583. X#define MS 21
  584. X#define MO 22
  585. X#define MT 23
  586. X#define NE 24
  587. X#define NV 25
  588. X#define NH 26
  589. X#define NJ 27
  590. X#define NM 28
  591. X#define NY 29
  592. X#define NC 30
  593. X#define ND 31
  594. X#define OH 32
  595. X#define OK 33
  596. X#define OR 34
  597. X#define PA 35
  598. X#define RI 36
  599. X#define SC 37
  600. X#define SD 38
  601. X#define TN 39
  602. X#define TX 40
  603. X#define UT 41
  604. X#define VT 42
  605. X#define VA 43
  606. X#define WA 44
  607. X#define WV 45
  608. X#define WI 46
  609. X#define WY 47
  610. END_OF_FILE
  611. if test 662 -ne `wc -c <'map.h'`; then
  612.     echo shar: \"'map.h'\" unpacked with wrong size!
  613. fi
  614. # end of 'map.h'
  615. fi
  616. echo shar: End of archive 1 \(of 1\).
  617. cp /dev/null ark1isdone
  618. MISSING=""
  619. for I in 1 ; do
  620.     if test ! -f ark${I}isdone ; then
  621.     MISSING="${MISSING} ${I}"
  622.     fi
  623. done
  624. if test "${MISSING}" = "" ; then
  625.     echo You have the archive.
  626.     rm -f ark[1-9]isdone
  627. else
  628.     echo You still need to unpack the following archives:
  629.     echo "        " ${MISSING}
  630. fi
  631. ##  End of shell archive.
  632. exit 0
  633.